<template>
  <div class="import">
    <el-card>
      <h3 class="title">员工导入</h3>
      <el-alert show-icon title="警告提示的文案" type="warning"> </el-alert>
      <!-- 上传组件 -->
      <excel :beforeUpload="beforeUpload" :onSuccess="onSuccess"></excel>
    </el-card>
  </div>
</template>

<script>
import { addAllUserApi } from "@/api/employees";
export default {
  methods: {
    beforeUpload(file) {
      // 判断文件的大小 file.size b
      // 计算机存储数据的单位 b kb m G T 1024
      const less2M = file.size / 1024 / 1024 < 2;
      if (!less2M) {
        this.$message.error("文件大小超过了 2M");
      }
      return less2M;
    },
    async onSuccess({ header, results }) {
      console.log(header, results);
      // 定义中文属性对应的英文属性
      var obj = {
        入职日期: "timeOfEntry",
        姓名: "username",
        工号: "workNumber",
        手机号: "mobile",
        转正日期: "correctionTime"
      };
      // 将中文的属性改为英文的属性
      const newArr = results.map(item => {
        // 定义一个转换之后的对象
        var newObj = {};
        Object.keys(obj).forEach(subitem => {
          if (
            obj[subitem] == "timeOfEntry" ||
            obj[subitem] == "correctionTime"
          ) {
            // 将天数据转为时间
            newObj[obj[subitem]] = this.formatData(item[subitem]);
          } else {
            newObj[obj[subitem]] = item[subitem];
          }
        });
        return newObj;
      });
      // 将数据提交到服务器
      await addAllUserApi(newArr);
      // 提示上传成功
      this.$message.success("上传成功");
      // 返回员工列表
      this.$router.push("/employees");
    },

    // 转换时间：将 excel 中的具体天数转为具体时间
    formatData(days) {
      // 将天数转为时间戳
      let timestemp = (days - 1) * 24 * 3600 * 1000;
      // 再将时间戳转为具体时间
      var time = new Date(timestemp);
      // js年份从1970年开始， excel是1900年开始 所以年份多了70年 需要减去70年
      time.setFullYear(time.getFullYear() - 70);
      // 返回时间
      return time;
    }
  }
};
</script>

<style lang="scss" scoped>
.import {
  padding: 20px;
  .title {
    text-align: center;
  }
}
</style>
